#ifndef _MOD_UART_HEADER_
#define _MOD_UART_HEADER_

#define UART0RXNUM				(rUFSTAT0&0x3f)
#define UART0TXNUM				((rUFSTAT0>>8)&0x3f)
#define UART0RXINT_ENABLE		(rUCON0|=0x01)
#define UART0RXINT_DISABLE		(rUCON0&=(~0x01))
#define UART0RXINT_ISON		(rUCON0&0x01)
#define UART0TXINT_ENABLE		(rUCON0|=0x04)
#define UART0TXINT_DISABLE		(rUCON0&=(~0x04))
#define UART0TXINT_ISON		(rUCON0&0x04)

#define URAT0RXBUF_LEN		1024
#define URAT0TXBUF_LEN		1024




void Uart_Select(int ch);
void Uart_TxEmpty(int ch);
void Uart_Init(int mclk,int baud);
char Uart_Getch(void);
char Uart_GetKey(void);
void Uart_GetString(char *string);	
int  Uart_GetIntNum(void);
int Uart_GetIntNum_GJ(void) ;
void Uart_SendByte(int data);
void Uart_Printf(char *fmt,...);
void Uart_SendString(char *pt);
void UartPollBufOut(byte *pbuf,uint len);
void UART0SendByte(byte data);
byte UART0RecvByte(void);

void __irq Interrupt_UART0(void);
void __irq Interrupt_UartDMASend0(void);
void __irq Interrupt_UartDMARecv0(void);
void TestUartDMA(void);
void SetupUartDMASend(int baud);
void SetupUartDMARecv(int baud);
void UartDMASend(uint src_addr, uint dst_addr, uint len);
void UartDMARevc(uint src_addr, uint dst_addr, uint len);

void UART0ModSetup(int baudRate);
int UART0_IntGetBuf(byte *dat, int len);
void UART0_IntSetBuf(byte *dat, int len);
void UART0_TriggerSend(void);
void  UART0_SendData(byte *str, int len);
void UART0ModInterrupt(void);
//void __irq UART0ModInterrupt(void);



#endif
